home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Games Collection 1 / software vault.zip / software vault / CDR10 / MAPEDIT.ZIP / CHAR.C next >
C/C++ Source or Header  |  1993-04-02  |  10KB  |  336 lines

  1. #include "paint.h"
  2.  
  3. edit_pix(int x,int y)
  4. {
  5.     unsigned int loop,loop2;
  6.     char cep[128],tep[128];
  7.     char temps[40];
  8.     static int cx = 5;
  9.     static int cy = 5;
  10.     int mousex,mousey,mouseon,getcolor=0;
  11.  
  12.     for(loop=0;loop<64000;loop++)
  13.     {
  14.         *(scrptr+loop)=0;
  15.     }
  16.     for(loop=0;loop<10;loop++)
  17.     {
  18.         block(loop,0,1);
  19.         block(0,loop,1);
  20.         block(9,loop,1);
  21.         block(loop,9,1);
  22.     }
  23.     show_sprite(0,0,"charbox");
  24.     show_pal();
  25.     show_colors();
  26.     btc(x,y,cep);
  27.     bigchar(cep);
  28.     showcts(cep);
  29.     for(loop=0;loop<5;loop++)
  30.     {
  31.         for(loop2=0;loop2<5;loop2++)
  32.         {
  33.             btc(loop+x-2,loop2+y-2,tep);
  34.             cts(loop+23,loop2+2,tep);
  35.         }
  36.     }
  37.     mouseon=0;
  38.     show_sprite(0,80,"editmenubar");
  39.     for(;;)
  40.     {
  41.         mousex=mousecol();
  42.         mousey=mouserow();
  43.         sprintf(temps,"X: %3d Y: %3d",mousex,mousey);
  44.         put_edit_sline(0,temps);
  45.         if(mousex >183 && mousex<224 &&mousey>15 && mousey<56)
  46.         {
  47.             if(mouseon)
  48.             {
  49.                 mouseon=0;
  50.                 mousecursor(0);
  51.             }
  52.             vwait();
  53.             block(mousex/8,mousey/8,0);
  54.             vwait();
  55.             block(mousex/8,mousey/8,1);
  56.  
  57.             if(mousebuttons())
  58.             {
  59.                 ctb(x,y,cep);
  60.                 x=x+mousex/8-23-2;
  61.                 y=y+mousey/8-2-2;
  62.                 if(x<0)x=0;     if(y<0)y=0;
  63.                 if(x>39)x=39;   if(y>24)y=24;
  64.                 btc(x,y,cep);
  65.                 bigchar(cep);
  66.                 showcts(cep);
  67.                 for(loop=0;loop<5;loop++)
  68.                 {
  69.                     for(loop2=0;loop2<5;loop2++)
  70.                     {
  71.                         btc(loop+x-2,loop2+y-2,tep);
  72.                         cts(loop+23,loop2+2,tep);
  73.                     }
  74.                 }
  75.             btc(mousex/8-23+x-2,(mousey/8-2-2+y),tep);
  76.             cts(mousex/8,mousey/8,tep);
  77.             if(mousebuttons()==1)
  78.                 while(mousebuttons());
  79.             }
  80.             vwait();
  81.             btc(mousex/8-23+x-2,(mousey/8-2-2+y),tep);
  82.             cts(mousex/8,mousey/8,tep);
  83.         }
  84.         if(mousey<80)
  85.         {   /* above menu bar */
  86.             if(mouseon)
  87.             {
  88.                 mouseon=0;
  89.                 mousecursor(0);
  90.             }
  91.             vwait();
  92.             cross(mousex,mousey,0,80);
  93.             vwait();
  94.             cross(mousex,mousey,0,80);
  95.             if(mousey<72 && mousey >7 && mousex > 7 && mousex < 72)
  96.             {
  97.                 /* in edit box */
  98.                 vwait();
  99.                 block(mousex/8,mousey/8,0);
  100.                 vwait();
  101.                 block(mousex/8,mousey/8,1);
  102.                 if(mousebuttons())
  103.                 {
  104.                     if(getcolor)
  105.                     {
  106.                         switch(mousebuttons())
  107.                         {
  108.                             case 1:
  109.                                 lcol=cep[mousex/8-1+(mousey/8-1)*8];
  110.                                 break;
  111.                             case 4:
  112.                                 mcol=cep[mousex/8-1+(mousey/8-1)*8];
  113.                                 break;
  114.                             case 2:
  115.                                 rcol=cep[mousex/8-1+(mousey/8-1)*8];
  116.                                 break;
  117.                         }
  118.                         getcolor=0;
  119.                         show_colors();
  120.                         show_sprite(0,80,"editmenubar");
  121.                     }
  122.                     else
  123.                     {
  124.                         switch(mousebuttons())
  125.                         {
  126.                             case 1:
  127.                                 cep[mousex/8-1+(mousey/8-1)*8]=lcol;
  128.                                 break;
  129.                             case 4:
  130.                                 cep[mousex/8-1+(mousey/8-1)*8]=mcol;
  131.                                 break;
  132.                             case 2:
  133.                                 cep[mousex/8-1+(mousey/8-1)*8]=rcol;
  134.                                 break;
  135.                         }
  136.                         showcts(cep);
  137.                     }
  138.                 }
  139.                 vwait();
  140.                 block(mousex/8,mousey/8,cep[mousex/8-1+(mousey/8-1)*8]);
  141.  
  142.             }
  143.         }
  144.         else if (mousey<11*8 && !getcolor)
  145.         {
  146.             /* on menu bar */
  147.             if(!mouseon)
  148.             {
  149.                 mouseon=1;
  150.                 mousecursor(1);
  151.             }
  152.             if(mousebuttons())
  153.             {
  154.                 if(mousex>=0 && mousex<20)
  155.                 {
  156.                     show_sprite(0,80,"done");
  157.                     ctb(x,y,cep);
  158.                     waitup();
  159.                     show_sprite(0,80,"editmenubar");
  160.                     mousecursor(0);
  161.                     return;
  162.                 }
  163.                 if(mousex>20 && mousex<44)
  164.                 {
  165.                     show_sprite(21,80,"abort");
  166.                     waitup();
  167.                     show_sprite(0,80,"editmenubar");
  168.                     mousecursor(0);
  169.                     return;
  170.                 }
  171.                 if(mousex>227)
  172.                 {
  173.                     show_sprite(228,80,"blank2");
  174.                     waitup();
  175.                     show_sprite(0,80,"editmenubar");
  176.                 }
  177.                 if(mousex>148 && mousex < 186)
  178.                 {
  179.                     show_sprite(149,80,"getcolor");
  180.                     waitup();
  181.                     show_sprite(0,80,"pickcopyfrom");
  182.                     getcolor=1;
  183.                 }
  184.                 if(mousex>44 && mousex<76)
  185.                 {
  186.                     show_sprite(45,80,"reverse");
  187.                     reverse(cep);
  188.                     bigchar(cep);
  189.                     showcts(cep);
  190.                     waitup();
  191.                     show_sprite(0,80,"editmenubar");
  192.                 }
  193.                 if(mousex>126 && mousex<137)
  194.                 {
  195.                     show_sprite(127,80,"rotup");
  196.                     up(cep);
  197.                     bigchar(cep);
  198.                     showcts(cep);
  199.                     waitup();
  200.                     show_sprite(0,80,"editmenubar");
  201.                 }
  202.                 if(mousex>137 && mousex<148)
  203.                 {
  204.                     show_sprite(138,80,"rotdown");
  205.                     down(cep);
  206.                     bigchar(cep);
  207.                     showcts(cep);
  208.                     waitup();
  209.                     show_sprite(0,80,"editmenubar");
  210.                 }
  211.                 if(mousex>100 && mousex<113)
  212.                 {
  213.                     show_sprite(101,80,"rotleft");
  214.                     left(cep);
  215.                     bigchar(cep);
  216.                     showcts(cep);
  217.                     waitup();
  218.                     show_sprite(0,80,"editmenubar");
  219.                 }
  220.                 if(mousex>113 && mousex<126)
  221.                 {
  222.                     show_sprite(114,80,"rotright");
  223.                     right(cep);
  224.                     bigchar(cep);
  225.                     showcts(cep);
  226.                     waitup();
  227.                     show_sprite(0,80,"editmenubar");
  228.                 }
  229.                 if(mousex>76 && mousex<100)
  230.                 {
  231.                     show_sprite(77,80,"clear");
  232.                     switch(mousebuttons())
  233.                     {
  234.                         case 1:
  235.                             memset(cep,lcol,64);
  236.                             break;
  237.                         case 4:
  238.                             memset(cep,mcol,64);
  239.                             break;
  240.                         case 2:
  241.                             memset(cep,rcol,64);
  242.                             break;
  243.                     }
  244.                     bigchar(cep);
  245.                     showcts(cep);
  246.                     waitup();
  247.                     show_sprite(0,80,"editmenubar");
  248.                 }
  249.             }
  250.         }
  251.         else
  252.         {
  253.             /* below menu bar */
  254.             if(mouseon)
  255.             {
  256.                 mouseon=0;
  257.                 mousecursor(0);
  258.             }
  259.             vwait();
  260.             cross(mousex,mousey,88,200);
  261.             vwait();
  262.             cross(mousex,mousey,88,200);
  263.             if(what_color(mousex,mousey)>-1)
  264.             {
  265.                 vwait();
  266.                 block(mousex/8,mousey/8,0);
  267.                 vwait();
  268.                 block(mousex/8,mousey/8,1);
  269.                 vwait();
  270.                 block(mousex/8,mousey/8,what_color(mousex,mousey));
  271.                 switch(mousebuttons())
  272.                 {
  273.                     case 0:
  274.                         break;
  275.                     case 1:
  276.                         lcol=what_color(mousex,mousey);
  277.                         break;
  278.                     case 4:
  279.                         mcol=what_color(mousex,mousey);
  280.                         break;
  281.                     case 2:
  282.                         rcol=what_color(mousex,mousey);
  283.                         break;
  284.                 }
  285.                 if(mousebuttons())
  286.                     show_colors();
  287.  
  288.             }
  289.         }
  290.     }
  291. }
  292.  
  293. showcts(char *upd)
  294. {
  295.     int loop,loop2;
  296.  
  297.     cts(25,4,upd);
  298.     for(loop=0;loop<8;loop++)
  299.     {
  300.         cts(loop+19,9,upd);
  301.         cts(17,loop+1,upd);
  302.         for(loop2=0;loop2<8;loop2++)
  303.             cts(loop+32,loop2+1,upd);
  304.     }
  305. }
  306.  
  307. fblock(int x,int y,unsigned char color)
  308. {
  309.     int loop,loop2;
  310.     for(loop=0;loop<8;loop++)
  311.     {
  312.         for(loop2=0;loop2<8;loop2++)
  313.         {
  314.             *(scrptr+(y+loop)*320+x+loop2)=color;
  315.         }
  316.     }
  317. }
  318.  
  319. show_colors()
  320. {
  321.     fblock(109,13,lcol);
  322.     fblock(109,36,mcol);
  323.     fblock(109,59,rcol);
  324. }
  325.  
  326. put_edit_sline(int x,char *string)
  327. {
  328.     int loop,loop2;
  329.  
  330.     for(loop=0;loop<strlen(string);loop++)
  331.         for(loop2=0;loop2<8;loop2++)
  332.             memcpy(scrptr+(loop+x)*8+(loop2+96)*320,csptr[*(string+loop)][loop2],8);
  333. }
  334.  
  335.  
  336.